package com.intretech.tj.global.tools;

/**
 * 十六进制工具类
 */
public class HexTool {
    /**
     * 将二进制转为十六进制字符串<br/>
     * 若只有一位则在前添0<br/>
     * 若超过两位则丢失尾部数据
     *
     * @param value 二进制数
     * @return 两位十六进制字符串
     */
    public static String decimalToHexStr(int value) {
        String result = Integer.toHexString(value);
        if (result.length() < 2) result = "0" + result;
        if (result.length() > 2) result = result.substring(0, 2);
        return result;
    }

    /**
     * 将十六进制字符串转为byte数组<br/>
     * 两两读取字符串<br/>
     * 使用Integer.parseInt(str, 16)函数读取十六进制为二进制<br/>
     * 最后转为byte写入结果
     *
     * @param hexString 十六进制字符串
     * @return 转换的byte数组
     */
    public static byte[] hexStrToByteArray(String hexString) {
        hexString = hexString.replaceAll(" ", "");
        int len = hexString.length();
        byte[] result = new byte[len / 2];
        for (int i = 0; i < len; i += 2) {
            String sub = hexString.substring(i, i + 2);
            result[i / 2] = (byte) Integer.parseInt(sub, 16);
        }
        return result;
    }
}
